--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
docs/example_receiver.py 0b067914ea27ba0a42a674589d4207d199ef686b (0b067914) Text, 2.97 KB
Tff7b72import T7ee787RNS
Tff7b72import T7ee787LXMF
Tff7b72import T7ee787time
Te6edf3required_stamp_cost Tff7b72= T79c0ff8
Te6edf3enforce_stamps Tff7b72= Tff7b72False
Tff7b72def Td2a8ffdelivery_callbackTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4:
Tff7b72global Te6edf3my_lxmf_destinationTb4b4b4, Te6edf3router
Te6edf3time_string Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffSTa5d6ff"Tb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3messageTff7b72.Td2a8fftimestampTb4b4b4)Tb4b4b4)
Te6edf3signature_string Tff7b72= Ta5d6ff"Ta5d6ffSignature is invalid, reason undeterminedTa5d6ff"
Tff7b72if Te6edf3messageTff7b72.Td2a8ffsignature_validatedTb4b4b4:
Te6edf3signature_string Tff7b72= Ta5d6ff"Ta5d6ffValidatedTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3messageTff7b72.Td2a8ffunverified_reason Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSIGNATURE_INVALIDTb4b4b4:
Te6edf3signature_string Tff7b72= Ta5d6ff"Ta5d6ffInvalid signatureTa5d6ff"
Tff7b72if Te6edf3messageTff7b72.Td2a8ffunverified_reason Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSOURCE_UNKNOWNTb4b4b4:
Te6edf3signature_string Tff7b72= Ta5d6ff"Ta5d6ffCannot verify, source is unknownTa5d6ff"
Tff7b72if Te6edf3messageTff7b72.Td2a8ffstamp_validTb4b4b4:
Te6edf3stamp_string Tff7b72= Ta5d6ff"Ta5d6ffValidatedTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3stamp_string Tff7b72= Ta5d6ff"Ta5d6ffInvalidTa5d6ff"
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff+--- LXMF Delivery ---------------------------------------------Ta5d6ff"Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Source hash : Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3messageTff7b72.Td2a8ffsource_hashTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Source instance : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8ffget_sourceTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Destination hash : Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3messageTff7b72.Td2a8ffdestination_hashTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Destination instance : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8ffget_destinationTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Transport Encryption : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8fftransport_encryptionTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Timestamp : Ta5d6ff"Tff7b72+Te6edf3time_stringTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Title : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8fftitle_as_stringTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Content : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8ffcontent_as_stringTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Fields : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3messageTff7b72.Td2a8fffieldsTb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3messageTff7b72.Td2a8ffratchet_idTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Ratchet : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ff_get_ratchet_idTb4b4b4(Te6edf3messageTff7b72.Td2a8ffratchet_idTb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Message signature : Ta5d6ff"Tff7b72+Te6edf3signature_stringTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff| Stamp : Ta5d6ff"Tff7b72+Te6edf3stamp_stringTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Tffea00\tTa5d6ff+---------------------------------------------------------------Ta5d6ff"Tb4b4b4)
T8b949e# Optionally, send a reply
T8b949e# source = my_lxmf_destination
T8b949e# dest = message.source
T8b949e# lxm = LXMF.LXMessage(dest, source, "Reply", None, desired_method=LXMF.LXMessage.DIRECT, include_ticket=True)
T8b949e# router.handle_outbound(lxm)
Te6edf3r Tff7b72= Te6edf3RNSTff7b72.Td2a8ffReticulumTb4b4b4(Tb4b4b4)
Te6edf3router Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMRouterTb4b4b4(Te6edf3storagepathTff7b72=Ta5d6ff"Ta5d6ff./tmp1Ta5d6ff"Tb4b4b4, Te6edf3enforce_stampsTff7b72=Te6edf3enforce_stampsTb4b4b4)
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTb4b4b4(Tb4b4b4)
Te6edf3my_lxmf_destination Tff7b72= Te6edf3routerTff7b72.Td2a8ffregister_delivery_identityTb4b4b4(Te6edf3identityTb4b4b4, Te6edf3display_nameTff7b72=Ta5d6ff"Ta5d6ffAnonymous PeerTa5d6ff"Tb4b4b4, Te6edf3stamp_costTff7b72=Te6edf3required_stamp_costTb4b4b4)
Te6edf3routerTff7b72.Td2a8ffregister_delivery_callbackTb4b4b4(Te6edf3delivery_callbackTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffReady to receive on: Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3my_lxmf_destinationTff7b72.Td2a8ffhashTb4b4b4)Tb4b4b4)
T8b949e# You can set a propagation node address to test receiving
T8b949e# messages from a propagation node, instead of directly
T8b949e# router.set_outbound_propagation_node(bytes.fromhex("e75d9b6a69f82b48b6077cf2242d7499"))
T8b949e# This loop allows you to execute various actions for testing
T8b949e# and experimenting with the example scripts.
Tff7b72while Tff7b72TrueTb4b4b4:
Tffa657inputTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffAnnouncing lxmf.delivery destination...Ta5d6ff"Tb4b4b4)
Te6edf3routerTff7b72.Td2a8ffannounceTb4b4b4(Te6edf3my_lxmf_destinationTff7b72.Td2a8ffhashTb4b4b4)
T8b949e# input()
T8b949e# RNS.log("Requesting messages from propagation node...")
T8b949e# router.request_messages_from_propagation_node(identity)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────